package com.terry.test3;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * 打印任务排序
 *
 * 某个打印机根据打印队列执行打印任务。打印任务分为九个优先级，分别用数字1-9表示，数字越大优先级越高。打印机每次从队列头部取出第一个任务A，
 * 然后检查队列余下任务中有没有比A优先级更高的任务，如果有比A优先级高的任务，则将任务A放到队列尾部，否则就执行任务A的打印。
 * 请编写一个程序，根据输入的打印队列，输出实际的打印顺序。
 * 输入描述
 *
 * 输入一行，为每个任务的优先级，优先级之间用逗号隔开，优先级取值范围是1~9。
 * 输出描述
 *
 * 输出一行，为每个任务的打印顺序，打印顺序从0开始，用逗号隔开
 * 示例 1 输入输出示例仅供调试，后台判题数据一般不包含示例
 *
 * 输入
 *
 * 9,3,5
 *
 * 输出
 *
 * 0,2,1
 *
 * 说明
 *
 * 队列头部任务的优先级为9，最先打印，故序号为0；
 * 接着队列头部任务优先级为3，队列中还有优先级为5的任务，优先级3任务被移到队列尾部；
 * 接着打印优先级为5的任务，故其序号为1；
 * 最后优先级为3的任务的序号为2。
 *
 * @author 小八
 * @date 2023年02月08日17:04
 */
public class Title4 {
        //9,3,3,3,3,5
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNextLine()){
            List<Integer> list = Stream.of(in.nextLine().split(",")).map(Integer::parseInt).collect(Collectors.toList());
            int[] runArr = new int[list.size()];
            Integer[] pArr = list.toArray(new Integer[list.size()]);
            Arrays.sort(pArr,(a,b)->b-a);
            int runIndex = 0;
            Deque<Task> deque = new ArrayDeque<>();
            IntStream.range(0,list.size()).forEach(index->{
                Task task = new Task();
                task.level =  list.get(index) ;
                task.index = index ;
                deque.add(task);
            });
            while(!deque.isEmpty()){
                Task curE =  deque.removeFirst();
               if(curE.level == pArr[runIndex]){
                   runArr[curE.index] = runIndex++;
               }else{
                   deque.add(curE);
               }
            }
            for(int i=0;i<runIndex;i++){
                System.out.print(runArr[i]+" ");
            }
        }
    }
}
class Task{
   public int level ;
   public int index ;
}
